home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_80 / midiinfo.pas < prev    next >
Pascal/Delphi Source File  |  1995-01-01  |  2KB  |  93 lines

  1. Library MidiInfo;
  2. {
  3.   Copyright (c) June 1993, by Charlie Calvert
  4.   Feel free to use this code as an adjunct to your own programs.
  5. }
  6.  
  7. uses
  8.   MMSystem,
  9.   PlayInfo,
  10.   Strings,
  11.   WinCrt,
  12.   WinProcs,
  13.   WinTypes;
  14.  
  15. const
  16.   MsgLen = 200;
  17.  
  18. procedure PauseMidi; export;
  19. var
  20.   Info: TMci_Generic_Parms;
  21.   Flags: LongInt;
  22.   S1: array[0..MsgLen] of Char;
  23.   Result: LongInt;
  24. begin
  25.   Info.dwCallBack := 0;
  26.   Flags := 0;
  27.   Result := mciSendCommand(wDeviceID, Mci_Pause, Flags, LongInt(@Info));
  28.   ErrorMsg(Result, S1);
  29. end;
  30.  
  31.  
  32. function GetMidiInfo(S: PChar): PChar; export;
  33. var
  34.   Info: TMci_Info_Parms;
  35.   Flags: LongInt;
  36.   S1: array[0..MsgLen] of Char;
  37.   Result: LongInt;
  38. begin
  39.   Info.dwCallBack := 0;
  40.   Info.lpstrReturn := S;
  41.   Info.dwRetSize := MsgLen;
  42.   Flags := Mci_Notify or Mci_Info_Product;
  43.   Result := mciSendCommand(wDeviceID, Mci_Info, Flags, LongInt(@Info));
  44.   ErrorMsg(Result, S1);
  45.   GetMidiInfo := S;
  46. end;
  47.  
  48. function CheckForMapper: Boolean; export;
  49. const
  50.   S:PChar = ('Midi Mapper is not available, Continue?');
  51. var
  52.   Flags: LongInt;
  53.   Result: LongInt;
  54.   StatusParms: TMci_Status_Parms;
  55.   Sti: Integer;
  56. begin
  57.   CheckForMapper := False;
  58.   StatusParms.dwItem := Mci_Seq_Status_Port;
  59.   Flags := Mci_Status_Item;
  60.   Result := MciSendCommand(wDeviceID, Mci_Status, Flags, LongInt(@StatusParms));
  61.   if Result <> 0 then begin
  62.     CloseMci;
  63.     Exit;
  64.   end;
  65.  
  66.   StI := LoWord(StatusParms.dwReturn);
  67.   if (Sti <> Midi_Mapper) then begin
  68.     if(MessageBox(0, S, 'Query', mb_YesNo) <> IDYes) then begin
  69.       CloseMci;
  70.       exit;
  71.     end;
  72.   end;
  73.   CheckForMapper := True;
  74. end;
  75.  
  76. exports
  77.   ErrorMsg index 1,
  78.   OpenMci index 2,
  79.   CloseMci index 3,
  80.   PlayMci index 4,
  81.   PauseMidi index 5,
  82.   GetMidiInfo index 6,
  83.   CheckForMapper index 7,
  84.   SetTimeFormatMS index 8,
  85.   GetLocation index 9,
  86.   StopMci index 10,
  87.   GetInfo index 11,
  88.   GetDeviceId index 12,
  89.   GetLen index 13,
  90.   GetMode index 14;
  91.  
  92. begin
  93. end.